home *** CD-ROM | disk | FTP | other *** search
- DECLARE SUB BasicInt (IntType AS INTEGER)
- '
- ' Demonstration of Mouse-controlled Buttons
- '
- TYPE REGISTERS
- AX AS INTEGER
- BX AS INTEGER
- CX AS INTEGER
- DX AS INTEGER
- DS AS INTEGER
- SI AS INTEGER
- ES AS INTEGER
- DI AS INTEGER
- FL AS INTEGER
- END TYPE
- DIM SHARED REGS AS REGISTERS
-
- '*************************************
- SCREEN 9
- COLOR 8, 11
- CLS
- '************************
-
- Choice% = 1
- GOSUB PaintButtons
-
-
-
-
- ' test for presence of a mouse
-
- REGS.AX = 0
- CALL BasicInt(&H33)
- IF REGS.AX THEN
- Mouse% = 1
- REGS.AX = 4
- REGS.CX = 315
- REGS.DX = 35
- CALL BasicInt(&H33)
- REGS.AX = 1
- CALL BasicInt(&H33)
- END IF
-
- ' handle both keys and mouse clicks
-
- WHILE Choice% <> 7
- x$ = ""
- WHILE LEN(x$) = 0
- Counter! = TIMER
- WHILE LEN(x$) = 0
- x$ = INKEY$
- IF Mouse% THEN
- REGS.AX = 3
- CALL BasicInt(&H33)
- IF (REGS.BX AND 1) THEN
- IF REGS.CX > 300 AND REGS.CX < 331 THEN
- IF (REGS.DX MOD 42) > 21 THEN
- OldChoice% = Choice%
- Choice% = 1 + INT(REGS.DX / 42)
- IF Choice% = OldChoice% THEN
- IF TIMER - Counter! < .3 THEN
- IF NoGap% = 0 THEN
- x$ = CHR$(13)
- END IF
- END IF
- ELSE
- GOSUB PaintButtons
- END IF
- Counter! = TIMER
- NoGap% = 1
- END IF
- END IF
- ELSE
- NoGap% = 0
- END IF
- END IF
- WEND
- IF LEN(x$) = 2 THEN
- IF RIGHT$(x$, 1) = "H" THEN
- Choice% = Choice% - 1
- END IF
- IF RIGHT$(x$, 1) = "P" THEN
- Choice% = Choice% + 1
- END IF
- IF Choice% = 0 THEN Choice% = 1
- IF Choice% = 8 THEN Choice% = 7
- GOSUB PaintButtons
- END IF
- IF x$ <> CHR$(13) THEN x$ = ""
- WEND
- LINE (150, 0)-(250, 349), 0, BF
- LINE (150, 42 * Choice% - 18)-(250, 42 * Choice% + 4), 12, BF
- WEND
-
- IF Mouse% THEN
- REGS.AX = 2
- CALL BasicInt(&H33)
- END IF
-
- TimeStart! = TIMER
- WHILE TIMER - TimeStart! < 2
- WEND
-
-
-
- STOP
-
-
-
-
- '************************
- ' Subroutine to paint the buttons
- '
- PaintButtons:
- IF Mouse% THEN
- REGS.AX = 2
- CALL BasicInt(&H33)
- END IF
- FOR i% = 1 TO 7
- LOCATE 3 * i%, 39
- IF i% = Choice% THEN Hue% = 15 ELSE Hue% = 8
- COLOR Hue%
- PRINT i%
- LINE (300, 42 * i% - 18)-(330, 42 * i% + 4), Hue%, B
- NEXT
- IF Mouse% THEN
- REGS.AX = 1
- CALL BasicInt(&H33)
- END IF
-
-
-
- RETURN
-
- SUB BasicInt (IntType AS INTEGER) STATIC
-
-
- DIM ASM%(54)
- DEF SEG = VARSEG(ASM%(0))
-
- IF ASM%(1) = 0 THEN
- BLOAD "BASICINT.OVL", VARPTR(ASM%(0))
- END IF
-
- CALL ABSOLUTE(REGS, IntType, VARPTR(ASM%(0)))
-
- DEF SEG
-
- END SUB
-
-